package com.zstu.lvxiang.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 日期工具类
 */
public class DateUtils{
    /**
     * 默认日期格式, yyyy-MM-dd
     */
    public static String DEFAULT_DATE_PATTERN = "yyyy-MM-dd";
    /**
     * 默认日期格式, yyyy-MM-dd
     */
    public static String DEFAULT_DATE_PATTERN_HOUR = "yyyy-MM-dd HH:mm";
    /**
     * 默认时间格式, yyyy-MM-dd hh24:mm:ss
     */
    public static String DEFAULT_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";

    /**
     * 把符合日期格式的字符串转换为日期类型
     */
    public static Date stringToDate(String dateStr, String format) {
        Date d = null;
        SimpleDateFormat formater = new SimpleDateFormat(format);
        try {
            formater.setLenient(false);// 指定日期\时间解析是否不严格
            d = formater.parse(dateStr);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return d;
    }

    /**
     * @descript:把日期转换为字符串
     * @param date 日期
     * @param format 日期格式化方式
     * @return
     */
    public static String dateToString(Date date, String format) {
        SimpleDateFormat formater = new SimpleDateFormat(format);
        String result = formater.format(date);
        return result;
    }

    /**
     * @descript:计算两个字符串日期相差的天数
     * @param date1 字符串日期1
     * @param date2 字符串日期2
     * @param format 日期格式化方式
     * @return
     */
    public static long dayDiff(String date1, String date2,String format) {
        SimpleDateFormat formater = new SimpleDateFormat(format);
        long diff=0l;
        try {
            long d1 = formater.parse(date1).getTime();
            long d2 = formater.parse(date2).getTime();
            diff=(Math.abs(d1-d2) / (1000 * 60 * 60 * 24));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return diff;
    }

    /**
     * 计算两个日期相差的天数，如果date1 > date2 返回正数，否则返回负数
     * 日期精确到时分秒，若是不满足24小时则不满足一天，相差的天数为0
     */
    public static long dayDiff(Date date1, Date date2) {
        long diff = Math.abs(date1.getTime() - date2.getTime());
        diff /= 3600 * 1000 * 24;
        return diff;
    }
}